/*************************************************
filename	: input_interface.h
author		: Stefan lulham
desc		: Contains the input interface base
*************************************************/
#ifndef D_INPUT_INTERFACE_H
#define D_INPUT_INTERFACE_H

#include <modules\interface.h>
#include <platform.h>
//#include <modules\system\system_module.h>
#include <modules\input\input_enums.h>

//using namespace DelGE::Modules::System;

namespace DelGE
{
	namespace Modules
	{
		namespace Input
		{
			class InputInterface : public Interface
			{
			protected:
				//SystemModule* pSystem;
				int iMouseX, iMouseY;
				KeyState eMouseState[3];
				KeyState eKeyState[256];

			public:
				InputInterface();
				virtual ~InputInterface();

				/*void SetSystemHandle(SystemModule* pSystem);
				SystemModule* GetSystemHandle();*/

				bool IsKeyUp(KeyCode key);
				bool IsKeyDown(KeyCode key);
				bool IsKeyHit(KeyCode key);
				bool IsKeyPressed(KeyCode key);

				bool IsMouseButtonUp(MouseCode key);
				bool IsMouseButtonDown(MouseCode key);
				bool IsMouseButtonHit(MouseCode key);
				bool IsMouseButtonPressed(MouseCode key);

				virtual int GetMouseX() = 0;
				virtual int GetMouseY() = 0;
				virtual void SetMousePosition(int iMouseX, int iMouseY) = 0;

				virtual void Update() = 0;
			};
		}
	}
}

#endif